<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Hash;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class CateController extends Controller
{

public static function getAllCate()
{
		$res = DB::table('cates')->get();

	 // $res = DB::table('cates')
		// ->join('goods', 'goods.cateid', '=','cates.id')
	 //   ->select('cates.*','goods.image','goods.price')
	 //   	->get();
	 //    // dd($res);

	 //    return $res;
	    
	   // $res = DB::table('cates')
    //     ->join('goods', function ($join) {
    //         $join->on('goods.cateid', '=','cates.id')->orOn('cates.id');
    //     })
    //     ->get();
      return $res;

    //      dd($res);

}

//递归遍历数据
	// public static function getCateArr($cates,$pid)
	// {
	// 	$date = [];
	// 	foreach ($cates as $k => $v) {
	// 		if ($v->pid == $pid){
	// 			$v->sub = self::getCateArr($cates,$v->id);
	// 			$date[] = $v;
	// 		}
	// 	}
	// 	return $date;
	// }

		public static function getCateArr($cates,$pid)
	{
		$date = [];
		foreach ($cates as $k => $v) {
			if ($v->pid == $pid){
				// $v->sub = self::getCateArr($cates,$v->id);
				$date[] = $v;
			}
		}
		return $date;
	}


// 
	//获取所有分类下的子分类 按照sql排序
	public static function getCates()
	{
		$res = DB::table('cates')
		->select(DB::raw('id,catename,pid,path,status,concat(path,",",id)as paths'))
		->orderBy('paths')
		->get();
		// dd($res);
		foreach ($res as $k => $v) {
			$tmp = explode(',',$v->path);
			$len = count($tmp)-1;
			//修改分类的名称
			$res[$k]->catename = str_repeat('|---',$len).$v->catename;
		}
		return $res;
	}


   public function getAdd()
   {
   		//查询所有分类
   		// $res = DB::table('cates')->get();
   		$res = self::getCates();
   		// dd($res);
   		return view('cate.add',['cates'=>$res]);
   }

	   /**
	    * 分类数据的插入操作
	    */

   public function postInsert(Request $request)
   {
	   	// dd($request->all());
	   	$data = $request->only(['catename','pid']);
	   	//拼接数据
	   	$pid = $request->input('pid');
	   	if($pid == 0){
	   		$data['path'] = 0;
	   	}else{
	   		$info = DB::table('cates')->where('id',$pid)->first();
	   		// dd($info);
	   		$data['path'] = $info->path.','.$info->id;
	   	}
	   	//执行数据插入
	//dd($data);
	   	$res = DB::table('cates')->insert($data);
	    if($res){
		//成功 重定向 页面跳转到列表页
			return redirect('admin/cate/index')->with('success','分类添加成功');
		}else{
		//失败 重定向 回到当前页
			return back()->with('error','分类插入失败');
		}
   	}

   /**
    * 分类首页
    */

   public function getIndex()
   {
   		//查询数据显示模版
   		// $cates = DB::table('cates')->get();
   		$cates = self::getCates();
   		//显示模板
   		return view('cate.index',['cates'=>$cates]);
   }

   //删除操作
   public function getDelete($id)
   {
	   	//判断是否有子类
	   	$data = DB::table('cates')->where('pid',$id)->count();
	   	if($data > 0){
	   		return back()->with('error','数据删除失败,下面有子类');
	   	}else{
	   		$res = DB::table('cates')->where('id',$id)->delete();
	   		if($res){
    		//成功 重定向 页面跳转到列表页
	    		return redirect('admin/cate/index')->with('success','数据删除成功');
	    	}else{
	    		//失败 重定向 回到当前页
	    		return back()->with('error','数据删除失败');
	    	}
	   	}
    }

    //分类修改 表单

    public function getEdit($id)
    {
    	//查询所有分类
    	$cates = self::getCates();
    	//查询当前分类的信息
    	$catesinfo = DB::table('cates')->where('id',$id)->first();
    	//显示模板 分配变量
    	return view('cate.edit',['catesinfo'=>$catesinfo,'cates'=>$cates]);
    }

    //进行数据修改
    public function postUpdate(Request $request)
    {
    	// dd($request->all());
    	//根据id查询原来数据
    	$id = $request->input('id');
    	$pid = $request->input('pid');
    	$data = $request->only(['catename','pid']);
    	$info = DB::table('cates')->where('id',$id)->first();

    	//接受现有的数据
    	if($info->pid != $pid){
    		// 要修改分类就要查询 如果还有子分类就不能删除
    		$res = DB::table('cates')->where('pid',$id)->count();
    		if($res){
    		//成功 重定向 页面跳转到列表页
	    		return back()->with('error','该分类下有子类,不允许修改分类');
	    	}
    	}
    	//拼接路径
    	if($pid == 0){
	   		$data['path'] = 0;
	   	}else{
	   		$info = DB::table('cates')->where('id',$pid)->first();
	   		// dd($info);
	   		$data['path'] = $info->path.','.$info->id;
	   	}
    	//可以修改
    	$res = DB::table('cates')->where('id',$id)->update($data);
    	if($res){
    		//成功 重定向 页面跳转到列表页
	    		return redirect('admin/cate/index')->with('success','数据修改成功');
	    	}else{
	    		//失败 重定向 回到当前页
	    		return back()->with('error','数据修改失败');
	    	}
    }

}
